iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
Odoo

利用【AI】工具,聰明進行 Odoo 程式開發系列 第 14

Day14:個案一:學校圖書管理(10)-逾期提醒寄送e-mail

  • 分享至 

  • xImage
  •  

使用者故事

作為一名系統管理人員,逾期提醒能自動寄送E-MAIL

設置odoo17外寄伺服器

設置流程

  • 1.建立新的gmail
  • 2.進入安全性,啟動兩階段認證
  • 3.取得應用程式密碼(備用)
    請複製應用程式密碼備用
    https://ithelp.ithome.com.tw/upload/images/20240928/20102255dUeDJcJlzW.jpg

進入odoo系統,進行設置流程

  • 使用系統管理者登入(預設帳號密碼:admin/admin123)
  • 進入系統路徑:設定>一般設定(拉到最下方)
  • 搜尋:電子郵件,勾選使用自訂電子郵件伺服器
  • 點選發送信件伺服器
    https://ithelp.ithome.com.tw/upload/images/20240928/20102255GsRAgoMwsm.jpg
  • 點選新增
    如下資訊輸入
SMTP主機:smtp.gmail.com
SMTP 埠號:465
SMTP 安全模式:SSL/TLS
SMTP 認證:是
SMTP 帳號:(貼上新的gmail)
SMTP 密碼:(請貼上應用程式密碼)

GPT回應,重點資訊

1. 調整 notify_next_reservation 方法以寄送電子郵件


    @api.model
    def notify_next_reservation(self, book):
        """通知下一位預約的讀者書籍已可借閱,並寄送電子郵件"""
        next_reservation = self.search([
            ('book_id', '=', book.id),
            ('state', '=', 'pending')
        ], order='reservation_date asc', limit=1)

        if next_reservation:
            next_reservation.write({'state': 'notified'})
            book.message_post(body=f"書籍 {book.name} 已通知讀者 {next_reservation.reserved_by.name},可借閱。")

            # 發送電子郵件給學生
            if next_reservation.reserved_by.email:
                template = self.env.ref('your_module.mail_template_notify_next_reservation')
                if template:
                    template.sudo().send_mail(next_reservation.id, force_send=True)
                else:
                    # 如果沒有定義模板,可以直接使用 message_post
                    next_reservation.reserved_by.user_id.partner_id.message_post(
                        subject='書籍可借閱通知',
                        body=f"親愛的 {next_reservation.reserved_by.name},您預約的書籍《{book.name}》現在可以借閱,請盡快前往借閱。"
                    )
  • 說明
    • 檢查預約的學生是否有電子郵件地址。
    • 使用郵件模板 mail_template_notify_next_reservation 發送電子郵件。
    • 如果沒有郵件模板,則直接使用 message_post 發送訊息給學生的合作夥伴(partner)。

2. 創建郵件模板

在 XML 檔案中,定義一個郵件模板 mail.template,供上述方法使用。

<odoo>
    <data noupdate="1">
        <!-- 書籍可借閱通知的郵件模板 -->
        <record id="mail_template_notify_next_reservation" model="mail.template">
            <field name="name">書籍可借閱通知</field>
            <field name="model_id" ref="model_library_book_reservation"/>
            <field name="subject">書籍可借閱通知</field>
            <field name="email_from">${(object.company_id.email or 'noreply@example.com')|safe}</field>
            <field name="email_to">${object.reserved_by.email|safe}</field>
            <field name="body_html"><![CDATA[
                <p>親愛的 ${object.reserved_by.name},</p>
                <p>您預約的書籍《${object.book_id.name}》現在可以借閱,請盡快前往圖書館借閱。</p>
                <p>謝謝!</p>
            ]]></field>
        </record>
    </data>
</odoo>
  • 說明
    • 定義郵件模板 mail_template_notify_next_reservation,指定發送對象和郵件內容。
    • 使用 ${object.reserved_by.email} 獲取學生的電子郵件地址。

本章小結

詳細程式碼,可查看github修改記錄

https://github.com/kulius/odoo17_ithelp

在本章中,我們深入探討了如何在圖書館管理系統中有效運用電子郵件功能,特別是自動化的逾期提醒和預約通知。電子郵件在 Odoo 中扮演著至關重要的角色,不僅提高了系統的自動化程度,還大幅提升了用戶體驗和溝通效率。

電子郵件在 Odoo 中的重要性

  1. 自動化通知:透過電子郵件,系統可以自動向用戶發送各類通知,如逾期提醒、預約到期通知等,減少了人工干預,確保資訊及時傳達。
  2. 提升用戶體驗:學生可以即時收到與自己相關的資訊,方便他們管理借閱活動,增強了對系統的信任和依賴。
  3. 提高工作效率:管理人員不再需要逐一通知學生,節省了大量時間和精力,讓他們能專注於其他重要的管理工作。
  4. 紀錄與追溯:電子郵件提供了資訊傳遞的記錄,方便日後的查詢和核對,增加了系統操作的透明度。

實踐中的應用

在我們的圖書館管理系統中,我們實現了以下功能:

  • 逾期提醒電子郵件:系統每日自動檢查逾期的借閱記錄,並向相關學生發送電子郵件提醒他們盡快歸還書籍。
  • 預約通知電子郵件:當預約的書籍可供借閱時,系統自動向下一位預約的學生發送通知,提醒他們可以前來借閱。
  • 郵件模板的運用:透過定義郵件模板,我們可以統一郵件的格式和內容,確保傳遞的資訊清晰、專業,並且易於維護和更新。

技術實現要點

  • 依賴於 mail 模組:確保模組依賴於 Odoo 的 mail 模組,以使用郵件發送功能。
  • 郵件伺服器設定:在 Odoo 系統中正確設定外寄郵件伺服器,確保電子郵件能夠成功發送。
  • 使用郵件模板:透過 mail.template,我們可以在程式碼中方便地調用郵件模板,並進行動態的內容替換。

電子郵件的優勢

  • 即時性:電子郵件能夠在事件發生後立即發送,確保用戶能夠及時收到重要資訊。
  • 廣泛性:大多數用戶都熟悉電子郵件的使用,無需額外的學習成本。
  • 可追溯性:郵件提供了溝通的歷史記錄,有助於日後的查詢和問題解決。
  • 專業性:透過精心設計的郵件內容,提升系統的專業形象,增強用戶信任。

上一篇
Day13:個案一:學校圖書管理(9)-學生借書及訂閱記錄
下一篇
Day15:個案一:學校圖書管理(11)-網站查詢圖書
系列文
利用【AI】工具,聰明進行 Odoo 程式開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言